'''
进入陈晓旭吧
输入起始页
输入终止页
将起始页到终止页之间所有的页面全部保存到本地
陈晓旭_第n页.html


第一页https://tieba.baidu.com/f?kw=%E9%99%88%E6%99%93%E6%97%AD
第二页https://tieba.baidu.com/f?kw=%E9%99%88%E6%99%93%E6%97%AD&pn=50
第三页https://tieba.baidu.com/f?kw=%E9%99%88%E6%99%93%E6%97%AD&pn=100
'''

import requests
from urllib import parse
import time #时间
import  random  # 随机数

#python编程思想：面向对象
class TiebaSpider:
    def __init__(self):
        '''初始化函数，当创建对象的同时运行'''
        self.url="https://tieba.baidu.com/f?kw={}&pn={}"
        self.headers={
            "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36 Edg/92.0.902.78"
        }

    def get_html(self,url):
        '''获取页面'''
        '''函数不需要提前规定好返回值类型，需要返回哪个对象，就直接返回'''
        '''需要什么参数，直接在（）中写'''
        '''self.headers:表示当前对象的headers属性'''
        '''self表示当前对象'''
        html= requests.get(url=self.url,headers=self.headers).text
        return html

    def parse_html(self):
        '''解析页面'''
        pass #表示该函数没有其他的内容了


    def save_html(self,filename,html):
        '''保存数据'''
        with open(filename,'w',encoding='utf-8') as f:
            f.write(html)

    def run(self):
        '''对象程序的入口'''
        name = input("请输入贴吧名：")
        start= int(input("请输入起始页："))
        end = int(input("请输入终止页："))
        for page in range(start,end+1):
            url1=self.url.format(parse.quote(name),(page-1)*50)#地址
            html = self.get_html(url=url1)
            filename = '{}_第{}页.html'.format(name,page)
            self.save_html(filename,html)
            print("第%d页抓取完成"% page)#在终端显示
            time.sleep(random.randint(1,3))



if __name__ == '__main__':
    '''程序的入口'''
    tieba = TiebaSpider()
    tieba.run()




